<?php
/*
Cogumelo v0.2 - Innoto S.L.
Copyright (C) 2010 Innoto Gestión para el Desarrollo Social S.L. <mapinfo@map-experience.com>

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
USA.
*/

//
// Raise Error Controller abstract class
//

Cogumelo::Load("errorcodes");

abstract class ErrorController
{
	protected $debug;
	protected $errorcode;
	protected $errordata;
	protected $errorinfo;
	protected $errordump="";
	protected $errorhash;

    //
    // Class Constructor
    //
    function __construct($debug=true)
    {
    	$this->debug = $debug;
    	
    	if($debug)
		{
			//If in debugging mode, get the error code descriptions
			global $errorhash;
			$this->errorhash = $errorhash;
		}
    }
    
    //
    // Add a logline to log buffer
    //
    function raiseError($code, $info)
	{
		$this->errorcode=$code;
		$this->errorinfo=$info;
		$this->dump();
	}
	
	//
	// Dump errordata available in the buffer to desired destinations
	//
	abstract function dump();
	
	//
    // Dump logdata available in the buffer to screen
    //
    function screendump()
    {    
		$this->errordump= "<div class=\"errorcode\">ERROR CODE #{$this->errorcode}.</div>";
		
		if($this->debug)
			$this->errordump .= "<div class=\"errorinfo\">{$this->errorhash[$this->errorcode]}</div><div class=\"errorinfo\">{$this->errorinfo}</div>"; 
		else
			$this->errordump .= "<div class=\"errorinfo\">Se ha producido un error. Contacte con el administrador del sistema</div>"; 
		
		// Print default error message for non-debug.
		print $this->errordump;
    }
}


?>